package com.x.wx.conf;

import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.template.Engine;
import com.jfinal.weixin.sdk.api.ApiConfig;
import com.jfinal.weixin.sdk.api.ApiConfigKit;
import com.jfinal.wxaapp.WxaConfig;
import com.jfinal.wxaapp.WxaConfigKit;
import com.x.wx.controller.SpringUtils;
import com.x.wx.controller.WxMsgController;
import com.x.wx.model.WxAccount;
import com.x.wx.rpc.WxAccountRpcService;
import com.x.wx.rpc.WxUserRpcService;

import java.util.List;

public class WeixinConfig extends JFinalConfig {

	public void configConstant(Constants me) {
//		me.setDevMode(WeixinConstants.encryptMessage);
		// ApiConfigKit 设为开发模式可以在开发阶段输出请求交互的 xml 与 json 数据
		ApiConfigKit.setDevMode(me.getDevMode());
	}

	public void configRoute(Routes me) {
		me.add("/weixin/msg", WxMsgController.class);
	}

	public void configPlugin(Plugins me) {
	}

	public void configInterceptor(Interceptors me) {
	}

	public void configHandler(Handlers me) {

	}

	public void afterJFinalStart() {
		ApiConfig ac = new ApiConfig();
		// 配置微信 API 相关参数
		ac.setToken(WeixinConstants.token);
		ac.setAppId(WeixinConstants.appId);
		ac.setAppSecret(WeixinConstants.appSecret);

		/**
		 * 是否对消息进行加密，对应于微信平台的消息加解密方式： 1：true进行加密且必须配置 encodingAesKey
		 * 2：false采用明文模式，同时也支持混合模式
		 */
		ac.setEncryptMessage(WeixinConstants.encryptMessage);
		ac.setEncodingAesKey(WeixinConstants.encodingAesKey);

		ApiConfigKit.putApiConfig(ac);
		WxaConfig wc = new WxaConfig();

		wc.setAppSecret(WeixinConstants.appSecret);
		WxaConfigKit.setWxaConfig(wc);
	}

	@Override
	public void configEngine(Engine engine) {

	}
}
